#include "student_info.h"  // 包含头文件

int main() {
    Student *studentHead = NULL; // 链表头节点，初始为空
    const char *filename = "students.dat"; // 数据保存的文件名
    //const char *filename = "D:\\Users\\肖雯丹\\CLionProjects\\untitled5\\student.dat.txt";
    // 1. 加载已有学生数据
    loadStudents(&studentHead,(char *) filename);

    int choice;
    char id[MAX_ID], name[MAX_NAME], class_name[MAX_CLASS];

    while (1) {
        // 显示菜单
        printf("\n=== 学生信息管理系统 ===\n");
        printf("1. 录入学生信息\n");
        printf("2. 更新学生信息\n");
        printf("3. 删除学生信息\n");
        printf("4. 查看所有学生\n");
        printf("0. 退出（自动保存）\n");
        printf("请输入操作编号：");
        scanf("%d", &choice);

        switch (choice) {
            case 1: {
                // 录入学生信息
                printf("请输入学号："); scanf("%s", id);
                printf("请输入姓名："); scanf("%s", name);
                printf("请输入班级："); scanf("%s", class_name);

                Student *newStu = createStudent(id, name, class_name);
                if (newStu != NULL) {
                    if (addStudent(&studentHead, newStu) == 0) {
                        printf("学生信息录入成功！\n");
                    }
                }
                break;
            }
            case 2: {
                // 更新学生信息
                printf("请输入要更新的学号："); scanf("%s", id);
                printf("请输入新姓名："); scanf("%s", name);
                printf("请输入新班级："); scanf("%s", class_name);

                if (updateStudent(studentHead, id, name, class_name) == 0) {
                    printf("学生信息更新成功！\n");
                }
                break;
            }
            case 3: {
                // 删除学生信息
                printf("请输入要删除的学号："); scanf("%s", id);

                if (deleteStudent(&studentHead, id) == 0) {
                    printf("学生信息删除成功！\n");
                }
                break;
            }
            case 4: {
                // 查看所有学生
                printAllStudents(studentHead);
                break;
            }
            case 0: {
                // 退出并保存数据
                saveStudents(studentHead,(char *) filename);
                printf("系统已退出，数据已保存至 %s\n", filename);
                Student *current = studentHead, *next;
                while (current != NULL) {
                    next = current->next;
                    free(current);
                    current = next;
                }
                return 0;
            }
            default: {
                printf("无效选项，请重新输入！\n");
                break;
            }
        }
    }
}